package String;

/**
 * StringBuilder  专门用于操作字符串的工具类
 * 内部是一个字符数组，可以进行字符串的拼接
 * StringBuilder是线程不安全的，所以效率比StringBuffer高，单线程使用，不需要同步
 * 不适合高并发处理
 */
public class StringBuilderDemo {
    public static void main(String[] args) {
        String str = "Spend more time on yourself";
        StringBuilder sb = new StringBuilder(str);

        /*
        * append(String str)  追加, 在尾部添加新的字符串
        * 在尾部添加str
         */
        sb.append(" and less on others");
        System.out.println(sb);

        /*
        * insert(int index, String str)  插入, 在指定位置插入新的字符串
        * 在index位置插入str
         */
        sb.insert(0,"I ");
        System.out.println(sb);

        /*
        * replace(int start, int end, String str)  替换, 替换指定位置的字符串
        * 替换start到end-1之间的字符串   含头不含尾
         */
        sb.replace(21,25,"my");
        System.out.println(sb);

        /*
        * delete(int start, int end)  删除, 删除指定位置的字符串
        * 删除start到end-1之间的字符串   含头不含尾
         */
        sb.delete(0,1);
        System.out.println(sb);

        /*
        * reverse()  反转, 将字符串反转
         */
        sb.reverse();
        System.out.println(sb);

        /*
        * length()  获取长度, 获取字符串的长度
         */
        System.out.println(sb.length());

        sb.reverse();
        /*
        * charAt(int index)  获取字符, 获取指定位置的字符
         */
        System.out.println(sb.charAt(8));

        /*
        * delete(int start, int end)  删除, 删除指定位置的字符
        * 删除start到end-1之间的字符   含头不含尾
         */

        sb.delete(39,sb.length());
        System.out.println(sb);

        /*
        * toString()  将StringBuilder对象转换为String对象
        * 不会改变StringBuilder对象
        * 创建一个新的String对象并返回
         */
        String str2 = sb.toString();
        System.out.println(str2);
    }
}
